home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Shareware Grab Bag
/
Shareware Grab Bag.iso
/
090
/
pctj8506.arc
/
SIEVE.COB
< prev
next >
Wrap
Text File
|
1986-09-14
|
3KB
|
83 lines
IDENTIFICATION DIVISION.
*
* SIEVE OF ERATOSTHENES
* BYTE MAGAZINE HIGH-LEVEL LANGUAGE BENCHMARK
* JANUARY 1983 BYTE, PAGE 283
*
PROGRAM-ID. SIEVE.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SOURCE-COMPUTER. IBM-PC.
OBJECT-COMPUTER. IBM-PC.
*
DATA DIVISION.
WORKING-STORAGE SECTION.
* FOR DECIMAL VERSION, USAGE IS COMP-3.
* FOR BINARY, USAGE COMP-1 FOR RMCOBOL, COMP-4 FOR REALIA.
01 MISC.
05 I PIC 9(4) COMP-3.
05 K PIC 9(5) COMP-3.
05 PRIME-COUNT PIC 9(4) COMP-3.
05 PRIME PIC 9(5) COMP-3.
05 INPUT-COUNT PIC 99999.
05 ITER-COUNT PIC 9(4) COMP-3.
05 PRIME-DISP PIC 9(4).
*
01 FLAG-AREA.
05 FLAGS PIC X OCCURS 8191 TIMES.
*
* COPY TIMERDAT for Realia, COPY "TIMERDAT.CBL" for RMC
COPY TIMERDAT.
*
*
PROCEDURE DIVISION.
DISPLAY-MESSAGE.
DISPLAY "Sieve of Eratosthenes prime number routine.".
DISPLAY " ".
PERFORM 100-GET-COUNT THRU 100-EXIT
UNTIL INPUT-COUNT NUMERIC.
MOVE INPUT-COUNT TO ITER-COUNT.
*
TESTING-MODULE.
ACCEPT TIMER-START FROM TIME.
PERFORM ITERATION-ROUTINE ITER-COUNT TIMES.
ACCEPT TIMER-END FROM TIME.
PERFORM 2400-CALC-TIME THRU 2400-EXIT.
DISPLAY ELAPSED-TIME.
STOP RUN.
*
ITERATION-ROUTINE.
MOVE ZERO TO PRIME-COUNT.
PERFORM TABLE-FILL-ROUTINE VARYING I FROM 1 BY 1
UNTIL I = 8191.
PERFORM COMPARE-ROUTINE THRU COMPARE-EXIT VARYING I
FROM 1 BY 1 UNTIL I = 8191.
*
TABLE-FILL-ROUTINE.
MOVE "1" TO FLAGS (I).
*
COMPARE-ROUTINE.
IF FLAGS (I) = "0" GO TO COMPARE-EXIT.
COMPUTE PRIME = I + I + 1.
COMPUTE K = I + PRIME.
PERFORM STRIKOUT UNTIL K > 8191.
ADD 1 TO PRIME-COUNT.
*
COMPARE-EXIT.
EXIT.
*
STRIKOUT.
MOVE "0" TO FLAGS (K).
ADD PRIME TO K.
*
100-GET-COUNT.
DISPLAY "Enter iteration count 1-100".
ACCEPT INPUT-COUNT.
100-EXIT. EXIT.
* COPY TIMERPRO for Realia, COPY "TIMERPRO.CBL" for RMC
COPY TIMERPRO.